
//此源码被清华学神尹成大魔王专业翻译分析并修改
//尹成QQ77025077
//尹成微信18510341407
//尹成所在QQ群721929980
//尹成邮箱 yinc13@mails.tsinghua.edu.cn
//尹成毕业于清华大学,微软区块链领域全球最有价值专家
//https://mvp.microsoft.com/zh-cn/PublicProfile/4033620
//版权所有2014 Go作者。版权所有。
//此源代码的使用受BSD样式的控制
//可以在许可文件中找到的许可证。

//包sha3实现sha-3固定输出长度散列函数和
//由FIPS-202定义的Shake变量输出长度哈希函数。
//
//两种类型的散列函数都使用“海绵”结构和keccak
//置换。有关详细规范，请参阅http://keccak.noekeon.org/
//
//
//指导
//
//如果您不确定需要什么功能，请使用Shake256至少64
//输出字节。震动实例比sha3实例快；
//后者必须分配内存以符合hash.hash接口。
//
//如果需要密钥MAC（消息身份验证代码），请在
//输入的密钥，用shake256散列并读取至少32个字节的
//输出。
//
//
//安全优势
//
//sha3-x（x等于224、256、384或512）函数具有安全性
//X位图像前攻击的强度。因为它们只产生“x”
//输出位，它们的抗碰撞性只有“x/2”位。
//
//shake-256和-128函数具有256和
//128 bits against all attacks, provided that at least 2x bits of their output
//使用。分别请求超过64或32字节的输出
//不要增加震动功能的抗碰撞性。
//
//
//海绵结构
//
//海绵从公共伪随机构造一个伪随机函数
//排列，通过将排列应用于“速率+容量”状态
//字节，但隐藏了字节的“容量”。
//
//海绵从零状态开始。使用海绵散列输入，向上
//将输入的字节“速率”转换为海绵状态。海绵
//然后是“满的”，排列应用于“空的”。这个过程是
//重复直到所有输入被“吸收”。然后填充输入。
//消化是以同样的方式从海绵中“挤压”出来的，除了输出
//output is copied out instead of input being XORed in.
//
//海绵的一般安全强度是参数化的，它等于
//容量的一半；容量+速率等于排列的宽度。
//由于keccakf-1600排列宽1600位（200字节），这意味着
//海绵实例的安全强度等于（1600比特率）/2。
//
//
//建议
//
//对于大多数新用途，推荐使用震动功能。他们可以生产
//任意长度的输出。shake256，输出长度至少为
//64字节，针对所有攻击提供256位安全性。Keccak队
//建议大多数应用程序从sha2-512升级。（NIST选择了一个
//更强壮，但速度慢得多，例如Sha3-512的海绵。）
//
//sha-3函数是sha-2函数的“内嵌”替换。
//它们产生相同长度的输出，具有相同的安全强度
//抵御所有攻击。这意味着，特别是，sha3-256只有
//128位抗碰撞，因为它的输出长度是32字节。
package sha3
